import type { BaseTableCol } from 'tdesign-vue-next';

export type EditType = 'input' | 'slot' | 'select';

export type EditProps = {
  el: EditType; // 当前项编辑框的类型
  props?: any; // 编辑项参数，根据 tdeign 官方文档来传递，该属性所有值会透传到组件
  defaultValue?: string | number | boolean | any[]; // 编辑项默认值
};

export interface EnumProps {
  label: string; // 选项框显示的文字
  value: any; // 选项框值
  disabled?: boolean; // 是否禁用此选项
  children?: EnumProps[]; // 为树形选择时，可以通过 children 属性指定子选项
  [key: string]: any;
}

export interface ColumnProps extends Partial<BaseTableCol> {
  edit?: EditProps | undefined; // 编辑项配置
  enum?: EnumProps[] | ((params?: any) => Promise<any>); // 枚举类型（渲染值的字典）
  fieldNames?: { label: string; value: string }; // 指定 label && value 的 key 值
}
